package com.rzx.mybackend.service;

import com.rzx.mybackend.common.PageResult;
import com.rzx.mybackend.dto.GamePageDTO;
import com.rzx.mybackend.entity.Game;
import com.rzx.mybackend.entity.GamePublishTask;
import com.rzx.mybackend.vo.GameDetailsVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * GameService
 *
 * @author renzhexian
 * @date 2025/7/16
 */

public interface GameService {
    /*
    * 分页查询游戏列表
     */
    PageResult pageGameList(GamePageDTO gamePageDTO);

    /*
    上传文件，并更新数据库
     */
    void updateGamePicture(Long gameId, MultipartFile file) throws IOException;

    /*
    上传游戏视频
     */
    void updateGameVideo(Long gameId, MultipartFile multipartFile);

    /*
    根据游戏ID获取游戏信息
     */
    Game getGameById(Long gameId);

    /*
    更新游戏信息
     */
    void updateGame(Game game);

    /*
    根据游戏ID删除游戏
     */
    void deleteGame(Long gameId);

    /*
    根据游戏ID获取游戏详情
     */
    GameDetailsVO getGameDetails(Long gameId);

    /*
    处理延迟添加游戏
     */
    void handleDelayAddGame(Game game);

    /**
     * 内存管理
     * 更新游戏发布任务状态
     * @param gameId 游戏ID
     * @param task 游戏发布任务
     */
    void updateGamePublishTask(Long gameId, GamePublishTask task);

    /**
     * 内存管理
     * 删除游戏发布任务
     * @param gameId 游戏ID
     */
    void deleteGamePublishTask(Long gameId);

    /**
     * 内存管理
     * 获取游戏发布任务
     * @param gameId 游戏ID
     * @return GamePublishTask
     */
    GamePublishTask getGamePublishTask(Long gameId);
}
